package com.android.support.lib.universal.util;

import java.io.File;
import java.text.DecimalFormat;
import android.os.Environment;
import android.os.StatFs;

public class Utilsd {
	/**
	 * SD卡是否存在 ，并可读写 true 存在 false 不存在
	 * 
	 * @return
	 */
	public  boolean isExist() {

		if (Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED)
				|| Environment.getExternalStorageState().equals(
						Environment.MEDIA_MOUNTED_READ_ONLY)) {
			return true;

		} else
			return false;
	}

	/**
	 * SD卡剩余空间
	 * 
	 * @return
	 */
	public  Double getSDFreeSize() {
		// 取得SD卡文件路径
		File path = Environment.getExternalStorageDirectory();
		StatFs sf = new StatFs(path.getPath());
		// 获取单个数据块的大小(Byte)
		Double blockSize = (double) sf.getBlockSize(); // getBlockSizeLong()
														// API要求18
		// 空闲的数据块的数量
		Double freeBlocks = (double) sf.getAvailableBlocks();// getAvailableBlocksLong()
																// API要求18
		// 获取所有数据块数
		Double allBlocks = (double) sf.getBlockCount(); // getBlockCountLong()
														// API要求18

		DecimalFormat format = new DecimalFormat("0.00 ");
		// 返回SD卡空闲大小
		// return freeBlocks * blockSize; //单位Byte
		// return (freeBlocks * blockSize)/1024; //单位KB
		// format.format((freeBlocks * blockSize)/1024 /1024/1024); 单位 GB,是字符串类型
		return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB
	}

	/**
	 * SD卡总空间
	 * 
	 * @return
	 */
	public  Double getSDAllSize() {
		// 取得SD卡文件路径
		File path = Environment.getExternalStorageDirectory();
		StatFs sf = new StatFs(path.getPath());
		// 获取单个数据块的大小(Byte)
		Double blockSize = (double) sf.getBlockSize(); // getBlockSizeLong()
														// API要求18
		// 获取所有数据块数
		Double allBlocks = (double) sf.getBlockCount(); // getBlockCountLong()
														// API要求18

		DecimalFormat format = new DecimalFormat("0.00 ");
		// 返回SD卡空闲大小
		// return freeBlocks * blockSize; //单位Byte
		// return (freeBlocks * blockSize)/1024; //单位KB
		// format.format((freeBlocks * blockSize)/1024 /1024/1024); 单位 GB,是字符串类型
		return (allBlocks * blockSize) / 1024 / 1024; // 单位MB
	}

	/**
	 * 返回完整路径
	 * 
	 * @param path
	 *            路径，如"down/game.apk"
	 * @return
	 */
	public  String getPath(String path) {
		// 如果手机带有内置内存卡，默认为手机内部存储位置 。否则读取sdcard
		return Environment.getExternalStorageDirectory()
				.getAbsolutePath() + "/" + path;
	}
}
